package sort;

import java.util.Arrays;

/**
 * 选择排序
 *
 * @author shkstart
 * @create 2021-04-30 12:20
 */
public class SelectSort {
    public static void main(String[] args) {
        int[] arr = {12, 127, 3, 123 ,33};
        selectSort(arr);
        System.out.println(Arrays.toString(arr));
    }

    public static void selectSort(int[] arr) {

/**
 * 总结：先找出min  把它放在之前最小（或最大）min后面
 *
 *1.假设  第一个数组的第一个元素为最小值
 *       并定义出它的索引
 *
 */
        for (int j = 0; j <arr.length-1 ; j++) {

            int minIndex = j;
            int min = arr[j];
            for (int i = j + 1; i < arr.length ; i++) {
                if (min > arr[i]) {
                    //如果min大于当前元素
//                就把当前的元素赋值给min
//                此时min还是最小值
                    min = arr[i];
                    minIndex = i;
                }
            }
//        获得最小值min之后 交换
            arr[minIndex] = arr[j]; //min的索引指向大于它的那个值
            arr[j] = min;//在把min的值赋值给大于它索引
            System.out.println("第"+ j+" 轮");
            System.out.println(Arrays.toString(arr));
/**
 * 第0 轮
 * [3, 127, 12, 123, 33]
 * 第1 轮
 * [3, 12, 127, 123, 33]
 * 第2 轮
 * [3, 12, 33, 123, 127]
 * 第3 轮
 * [3, 12, 33, 123, 127]
 */
        }


    }


}
